[INFO] cloning repository https://github.com/Stratus51/coding_games_ocean_of_code
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Stratus51/coding_games_ocean_of_code" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FStratus51%2Fcoding_games_ocean_of_code", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FStratus51%2Fcoding_games_ocean_of_code'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] eb7a492144672defb4403fa87aaa6c4abf7aeb28
[INFO] fixing Stratus51/coding_games_ocean_of_code against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FStratus51%2Fcoding_games_ocean_of_code" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Stratus51/coding_games_ocean_of_code
[INFO] finished tweaking git repo https://github.com/Stratus51/coding_games_ocean_of_code
[INFO] tweaked toml for git repo https://github.com/Stratus51/coding_games_ocean_of_code written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Stratus51/coding_games_ocean_of_code on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Stratus51/coding_games_ocean_of_code already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1e6a9f3b2ca22d22f2b033110b9beada9876b86097007f1e4101955eb0cf2614
[INFO] running `Command { std: "docker" "start" "1e6a9f3b2ca22d22f2b033110b9beada9876b86097007f1e4101955eb0cf2614", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1e6a9f3b2ca22d22f2b033110b9beada9876b86097007f1e4101955eb0cf2614" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1e6a9f3b2ca22d22f2b033110b9beada9876b86097007f1e4101955eb0cf2614", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1e6a9f3b2ca22d22f2b033110b9beada9876b86097007f1e4101955eb0cf2614" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Compiling libc v0.2.68
[INFO] [stderr]    Compiling getrandom v0.1.14
[INFO] [stderr]     Checking ppv-lite86 v0.2.6
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking coding_games_ocean_of_code v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/main.rs from 2018 edition to 2021
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.87s
[INFO] [stderr] crater-edition-check: coding_games_ocean_of_code v0.1.0 (/opt/rustwide/workdir) updating edition from 2018 to 2021
[INFO] [stderr]     Checking coding_games_ocean_of_code v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/main.rs:510:13
[INFO] [stdout]     |
[INFO] [stdout] 510 |         for i in 0..size {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sonar_result`
[INFO] [stdout]     --> src/main.rs:1242:13
[INFO] [stdout]      |
[INFO] [stdout] 1242 |         let sonar_result = input_line.trim().to_string();
[INFO] [stdout]      |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sonar_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/main.rs:510:13
[INFO] [stdout]     |
[INFO] [stdout] 510 |         for i in 0..size {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_NB_REGION` is never used
[INFO] [stdout]   --> src/main.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const MAP_NB_REGION: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECTOR_SIZE` is never used
[INFO] [stdout]   --> src/main.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const SECTOR_SIZE: usize = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_SIDE_SIZE` is never used
[INFO] [stdout]   --> src/main.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const MAP_SIDE_SIZE: usize = MAP_NB_REGION * SECTOR_SIZE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NB_SECTORS` is never used
[INFO] [stdout]   --> src/main.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const NB_SECTORS: usize = 9;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Sonar` and `Mine` are never constructed
[INFO] [stdout]    --> src/main.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 102 | enum System {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] 103 |     Torpedo,
[INFO] [stdout] 104 |     Sonar,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 105 |     Silence,
[INFO] [stdout] 106 |     Mine,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `System` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]    --> src/main.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl System {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] 123 |     fn parse(s: &str) -> Self {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nb_true_bits` is never used
[INFO] [stdout]    --> src/main.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn nb_true_bits(n: u16) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nb_false_bits` is never used
[INFO] [stdout]    --> src/main.rs:149:4
[INFO] [stdout]     |
[INFO] [stdout] 149 | fn nb_false_bits(n: u16) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TRUE_BITS` is never used
[INFO] [stdout]    --> src/main.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | static mut TRUE_BITS: [u8; 128] = [0; 128];
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FALSE_BITS` is never used
[INFO] [stdout]    --> src/main.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 159 | static mut FALSE_BITS: [u8; 128] = [0; 128];
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_maps` is never used
[INFO] [stdout]    --> src/main.rs:161:11
[INFO] [stdout]     |
[INFO] [stdout] 161 | unsafe fn init_maps() {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NewMap` is never constructed
[INFO] [stdout]    --> src/main.rs:169:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | struct NewMap {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/main.rs:174:14
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl NewMap {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 174 |     const fn new() -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     fn set(&mut self, pos: Pos, value: bool) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     fn get(&self, pos: Pos) -> bool {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn copy_from(&mut self, map: &NewMap) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     fn shift(&mut self, dir: &Direction, n: usize) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     fn ipos_shift(&mut self, pos_shift: IPos) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     fn first_match(&self, value: bool) -> Result<Pos, ()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     fn count(&self, value: bool) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn compose(&self, map: &NewMap, map_offset: &Pos) -> NewMap {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `eq_or` and `reset` are never used
[INFO] [stdout]    --> src/main.rs:389:8
[INFO] [stdout]     |
[INFO] [stdout] 336 | impl Map {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 389 |     fn eq_or(&mut self, map: &Map) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 399 |     fn reset(&mut self) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `dist` and `isub` are never used
[INFO] [stdout]    --> src/main.rs:715:8
[INFO] [stdout]     |
[INFO] [stdout] 714 | impl Pos {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] 715 |     fn dist(&self, rhs: &Pos) -> usize {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 719 |     fn isub(&self, rhs: &Self) -> IPos {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IPos` is never constructed
[INFO] [stdout]    --> src/main.rs:727:8
[INFO] [stdout]     |
[INFO] [stdout] 727 | struct IPos {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OffCenteredMap` is never constructed
[INFO] [stdout]    --> src/main.rs:736:8
[INFO] [stdout]     |
[INFO] [stdout] 736 | struct OffCenteredMap {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/main.rs:741:14
[INFO] [stdout]     |
[INFO] [stdout] 740 | impl OffCenteredMap {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] 741 |     const fn new() -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SECTOR_MASK` is never used
[INFO] [stdout]    --> src/main.rs:749:12
[INFO] [stdout]     |
[INFO] [stdout] 749 | static mut SECTOR_MASK: [NewMap; NB_SECTORS] = [NewMap::new(); NB_SECTORS];
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TORPEDO_RANGE_MAP` is never used
[INFO] [stdout]    --> src/main.rs:750:12
[INFO] [stdout]     |
[INFO] [stdout] 750 | static mut TORPEDO_RANGE_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TORPEDO_SIDE_HIT_MAP` is never used
[INFO] [stdout]    --> src/main.rs:751:12
[INFO] [stdout]     |
[INFO] [stdout] 751 | static mut TORPEDO_SIDE_HIT_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SILENCE_RANGE_MAP` is never used
[INFO] [stdout]    --> src/main.rs:752:12
[INFO] [stdout]     |
[INFO] [stdout] 752 | static mut SILENCE_RANGE_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_game_maps` is never used
[INFO] [stdout]    --> src/main.rs:754:11
[INFO] [stdout]     |
[INFO] [stdout] 754 | unsafe fn init_game_maps() {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FuzzyPos` is never used
[INFO] [stdout]    --> src/main.rs:803:6
[INFO] [stdout]     |
[INFO] [stdout] 803 | enum FuzzyPos {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PosData` is never constructed
[INFO] [stdout]    --> src/main.rs:809:8
[INFO] [stdout]     |
[INFO] [stdout] 809 | struct PosData {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `analyse_action`, and `analyse_actions` are never used
[INFO] [stdout]    --> src/main.rs:822:8
[INFO] [stdout]     |
[INFO] [stdout] 821 | impl PosData {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 822 |     fn new(water_map: NewMap) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 831 |     fn analyse_action(&mut self, action: &OppAction) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 882 |     fn analyse_actions(&mut self, actions: &[OppAction]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MeAction` is never used
[INFO] [stdout]    --> src/main.rs:974:6
[INFO] [stdout]     |
[INFO] [stdout] 974 | enum MeAction {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `into_opp_action` is never used
[INFO] [stdout]    --> src/main.rs:998:8
[INFO] [stdout]     |
[INFO] [stdout] 997 | impl MeAction {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 998 |     fn into_opp_action(&self, current_sector: usize) -> OppAction {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OppAction` is never used
[INFO] [stdout]     --> src/main.rs:1013:6
[INFO] [stdout]      |
[INFO] [stdout] 1013 | enum OppAction {
[INFO] [stdout]      |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]     --> src/main.rs:1021:8
[INFO] [stdout]      |
[INFO] [stdout] 1020 | impl OppAction {
[INFO] [stdout]      | -------------- associated function in this implementation
[INFO] [stdout] 1021 |     fn parse(s: &str) -> Self {
[INFO] [stdout]      |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `torpedo` is never used
[INFO] [stdout]     --> src/main.rs:1278:8
[INFO] [stdout]      |
[INFO] [stdout] 1153 | impl Game {
[INFO] [stdout]      | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1278 |     fn torpedo(&mut self, pos: Pos) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:756:21
[INFO] [stdout]     |
[INFO] [stdout] 756 |     for (i, map) in SECTOR_MASK.iter_mut().enumerate() {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:771:25
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&raw const TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:772:17
[INFO] [stdout]     |
[INFO] [stdout] 772 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:783:17
[INFO] [stdout]     |
[INFO] [stdout] 783 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:791:9
[INFO] [stdout]     |
[INFO] [stdout] 791 |         SILENCE_RANGE_MAP.map.set(Pos { y: 4, x: i }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:792:9
[INFO] [stdout]     |
[INFO] [stdout] 792 |         SILENCE_RANGE_MAP.map.set(Pos { y: i, x: 4 }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:845:50
[INFO] [stdout]     |
[INFO] [stdout] 845 | ...                   let shift = pos.isub(&TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 845 |                             let shift = pos.isub(&raw const TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                                   +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:846:40
[INFO] [stdout]     |
[INFO] [stdout] 846 | ...                   let mask = TORPEDO_RANGE_MAP.map.clone().ipos_shift(shift);
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:41
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&raw const SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:65
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&SILENCE_RANGE_MAP.map, &raw const SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:868:49
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&raw const SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sonar_result`
[INFO] [stdout]     --> src/main.rs:1242:13
[INFO] [stdout]      |
[INFO] [stdout] 1242 |         let sonar_result = input_line.trim().to_string();
[INFO] [stdout]      |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sonar_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_NB_REGION` is never used
[INFO] [stdout]   --> src/main.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const MAP_NB_REGION: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECTOR_SIZE` is never used
[INFO] [stdout]   --> src/main.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const SECTOR_SIZE: usize = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_SIDE_SIZE` is never used
[INFO] [stdout]   --> src/main.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const MAP_SIDE_SIZE: usize = MAP_NB_REGION * SECTOR_SIZE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NB_SECTORS` is never used
[INFO] [stdout]   --> src/main.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const NB_SECTORS: usize = 9;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Sonar` and `Mine` are never constructed
[INFO] [stdout]    --> src/main.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 102 | enum System {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] 103 |     Torpedo,
[INFO] [stdout] 104 |     Sonar,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 105 |     Silence,
[INFO] [stdout] 106 |     Mine,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `System` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]    --> src/main.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl System {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] 123 |     fn parse(s: &str) -> Self {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nb_true_bits` is never used
[INFO] [stdout]    --> src/main.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn nb_true_bits(n: u16) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nb_false_bits` is never used
[INFO] [stdout]    --> src/main.rs:149:4
[INFO] [stdout]     |
[INFO] [stdout] 149 | fn nb_false_bits(n: u16) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TRUE_BITS` is never used
[INFO] [stdout]    --> src/main.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | static mut TRUE_BITS: [u8; 128] = [0; 128];
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FALSE_BITS` is never used
[INFO] [stdout]    --> src/main.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 159 | static mut FALSE_BITS: [u8; 128] = [0; 128];
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_maps` is never used
[INFO] [stdout]    --> src/main.rs:161:11
[INFO] [stdout]     |
[INFO] [stdout] 161 | unsafe fn init_maps() {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NewMap` is never constructed
[INFO] [stdout]    --> src/main.rs:169:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | struct NewMap {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/main.rs:174:14
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl NewMap {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 174 |     const fn new() -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     fn set(&mut self, pos: Pos, value: bool) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     fn get(&self, pos: Pos) -> bool {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn copy_from(&mut self, map: &NewMap) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     fn shift(&mut self, dir: &Direction, n: usize) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     fn ipos_shift(&mut self, pos_shift: IPos) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     fn first_match(&self, value: bool) -> Result<Pos, ()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     fn count(&self, value: bool) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn compose(&self, map: &NewMap, map_offset: &Pos) -> NewMap {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset` is never used
[INFO] [stdout]    --> src/main.rs:399:8
[INFO] [stdout]     |
[INFO] [stdout] 336 | impl Map {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 399 |     fn reset(&mut self) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `dist` and `isub` are never used
[INFO] [stdout]    --> src/main.rs:715:8
[INFO] [stdout]     |
[INFO] [stdout] 714 | impl Pos {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] 715 |     fn dist(&self, rhs: &Pos) -> usize {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 719 |     fn isub(&self, rhs: &Self) -> IPos {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IPos` is never constructed
[INFO] [stdout]    --> src/main.rs:727:8
[INFO] [stdout]     |
[INFO] [stdout] 727 | struct IPos {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OffCenteredMap` is never constructed
[INFO] [stdout]    --> src/main.rs:736:8
[INFO] [stdout]     |
[INFO] [stdout] 736 | struct OffCenteredMap {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/main.rs:741:14
[INFO] [stdout]     |
[INFO] [stdout] 740 | impl OffCenteredMap {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] 741 |     const fn new() -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SECTOR_MASK` is never used
[INFO] [stdout]    --> src/main.rs:749:12
[INFO] [stdout]     |
[INFO] [stdout] 749 | static mut SECTOR_MASK: [NewMap; NB_SECTORS] = [NewMap::new(); NB_SECTORS];
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TORPEDO_RANGE_MAP` is never used
[INFO] [stdout]    --> src/main.rs:750:12
[INFO] [stdout]     |
[INFO] [stdout] 750 | static mut TORPEDO_RANGE_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TORPEDO_SIDE_HIT_MAP` is never used
[INFO] [stdout]    --> src/main.rs:751:12
[INFO] [stdout]     |
[INFO] [stdout] 751 | static mut TORPEDO_SIDE_HIT_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SILENCE_RANGE_MAP` is never used
[INFO] [stdout]    --> src/main.rs:752:12
[INFO] [stdout]     |
[INFO] [stdout] 752 | static mut SILENCE_RANGE_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_game_maps` is never used
[INFO] [stdout]    --> src/main.rs:754:11
[INFO] [stdout]     |
[INFO] [stdout] 754 | unsafe fn init_game_maps() {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FuzzyPos` is never used
[INFO] [stdout]    --> src/main.rs:803:6
[INFO] [stdout]     |
[INFO] [stdout] 803 | enum FuzzyPos {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PosData` is never constructed
[INFO] [stdout]    --> src/main.rs:809:8
[INFO] [stdout]     |
[INFO] [stdout] 809 | struct PosData {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `analyse_action`, and `analyse_actions` are never used
[INFO] [stdout]    --> src/main.rs:822:8
[INFO] [stdout]     |
[INFO] [stdout] 821 | impl PosData {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 822 |     fn new(water_map: NewMap) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 831 |     fn analyse_action(&mut self, action: &OppAction) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 882 |     fn analyse_actions(&mut self, actions: &[OppAction]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MeAction` is never used
[INFO] [stdout]    --> src/main.rs:974:6
[INFO] [stdout]     |
[INFO] [stdout] 974 | enum MeAction {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `into_opp_action` is never used
[INFO] [stdout]    --> src/main.rs:998:8
[INFO] [stdout]     |
[INFO] [stdout] 997 | impl MeAction {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 998 |     fn into_opp_action(&self, current_sector: usize) -> OppAction {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OppAction` is never used
[INFO] [stdout]     --> src/main.rs:1013:6
[INFO] [stdout]      |
[INFO] [stdout] 1013 | enum OppAction {
[INFO] [stdout]      |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]     --> src/main.rs:1021:8
[INFO] [stdout]      |
[INFO] [stdout] 1020 | impl OppAction {
[INFO] [stdout]      | -------------- associated function in this implementation
[INFO] [stdout] 1021 |     fn parse(s: &str) -> Self {
[INFO] [stdout]      |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `torpedo` is never used
[INFO] [stdout]     --> src/main.rs:1278:8
[INFO] [stdout]      |
[INFO] [stdout] 1153 | impl Game {
[INFO] [stdout]      | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1278 |     fn torpedo(&mut self, pos: Pos) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:756:21
[INFO] [stdout]     |
[INFO] [stdout] 756 |     for (i, map) in SECTOR_MASK.iter_mut().enumerate() {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:771:25
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&raw const TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:772:17
[INFO] [stdout]     |
[INFO] [stdout] 772 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:783:17
[INFO] [stdout]     |
[INFO] [stdout] 783 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:791:9
[INFO] [stdout]     |
[INFO] [stdout] 791 |         SILENCE_RANGE_MAP.map.set(Pos { y: 4, x: i }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:792:9
[INFO] [stdout]     |
[INFO] [stdout] 792 |         SILENCE_RANGE_MAP.map.set(Pos { y: i, x: 4 }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:845:50
[INFO] [stdout]     |
[INFO] [stdout] 845 | ...                   let shift = pos.isub(&TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 845 |                             let shift = pos.isub(&raw const TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                                   +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:846:40
[INFO] [stdout]     |
[INFO] [stdout] 846 | ...                   let mask = TORPEDO_RANGE_MAP.map.clone().ipos_shift(shift);
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:41
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&raw const SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:65
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&SILENCE_RANGE_MAP.map, &raw const SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:868:49
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&raw const SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.18s
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]     Checking coding_games_ocean_of_code v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/main.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/main.rs (3 fixes)
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:756:21
[INFO] [stdout]     |
[INFO] [stdout] 756 |     for (i, map) in SECTOR_MASK.iter_mut().enumerate() {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `--force-warn static-mut-refs` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:771:25
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&raw const TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:772:17
[INFO] [stdout]     |
[INFO] [stdout] 772 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:783:17
[INFO] [stdout]     |
[INFO] [stdout] 783 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:791:9
[INFO] [stdout]     |
[INFO] [stdout] 791 |         SILENCE_RANGE_MAP.map.set(Pos { y: 4, x: i }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:792:9
[INFO] [stdout]     |
[INFO] [stdout] 792 |         SILENCE_RANGE_MAP.map.set(Pos { y: i, x: 4 }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:845:50
[INFO] [stdout]     |
[INFO] [stdout] 845 | ...                   let shift = pos.isub(&TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 845 |                             let shift = pos.isub(&raw const TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                                   +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:846:40
[INFO] [stdout]     |
[INFO] [stdout] 846 | ...                   let mask = TORPEDO_RANGE_MAP.map.clone().ipos_shift(shift);
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:41
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&raw const SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:65
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&SILENCE_RANGE_MAP.map, &raw const SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:868:49
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&raw const SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:756:21
[INFO] [stdout]     |
[INFO] [stdout] 756 |     for (i, map) in SECTOR_MASK.iter_mut().enumerate() {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `--force-warn static-mut-refs` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.06s
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:771:25
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&raw const TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] crater-edition-check: coding_games_ocean_of_code v0.1.0 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:772:17
[INFO] [stdout]     |
[INFO] [stdout] 772 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:783:17
[INFO] [stdout]     |
[INFO] [stdout] 783 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:791:9
[INFO] [stdout]     |
[INFO] [stdout] 791 |         SILENCE_RANGE_MAP.map.set(Pos { y: 4, x: i }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:792:9
[INFO] [stdout]     |
[INFO] [stdout] 792 |         SILENCE_RANGE_MAP.map.set(Pos { y: i, x: 4 }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:845:50
[INFO] [stdout]     |
[INFO] [stdout] 845 | ...                   let shift = pos.isub(&TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 845 |                             let shift = pos.isub(&raw const TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                                   +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:846:40
[INFO] [stdout]     |
[INFO] [stdout] 846 | ...                   let mask = TORPEDO_RANGE_MAP.map.clone().ipos_shift(shift);
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:41
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&raw const SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:65
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&SILENCE_RANGE_MAP.map, &raw const SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:868:49
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&raw const SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking coding_games_ocean_of_code v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/main.rs:510:13
[INFO] [stdout]     |
[INFO] [stdout] 510 |         for i in 0..size {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/main.rs:510:13
[INFO] [stdout]     |
[INFO] [stdout] 510 |         for i in 0..size {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sonar_result`
[INFO] [stdout]     --> src/main.rs:1242:13
[INFO] [stdout]      |
[INFO] [stdout] 1242 |         let sonar_result = input_line.trim().to_string();
[INFO] [stdout]      |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sonar_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_NB_REGION` is never used
[INFO] [stdout]   --> src/main.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const MAP_NB_REGION: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECTOR_SIZE` is never used
[INFO] [stdout]   --> src/main.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const SECTOR_SIZE: usize = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_SIDE_SIZE` is never used
[INFO] [stdout]   --> src/main.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const MAP_SIDE_SIZE: usize = MAP_NB_REGION * SECTOR_SIZE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NB_SECTORS` is never used
[INFO] [stdout]   --> src/main.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const NB_SECTORS: usize = 9;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Sonar` and `Mine` are never constructed
[INFO] [stdout]    --> src/main.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 102 | enum System {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] 103 |     Torpedo,
[INFO] [stdout] 104 |     Sonar,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 105 |     Silence,
[INFO] [stdout] 106 |     Mine,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `System` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]    --> src/main.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl System {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] 123 |     fn parse(s: &str) -> Self {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nb_true_bits` is never used
[INFO] [stdout]    --> src/main.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn nb_true_bits(n: u16) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nb_false_bits` is never used
[INFO] [stdout]    --> src/main.rs:149:4
[INFO] [stdout]     |
[INFO] [stdout] 149 | fn nb_false_bits(n: u16) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TRUE_BITS` is never used
[INFO] [stdout]    --> src/main.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | static mut TRUE_BITS: [u8; 128] = [0; 128];
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FALSE_BITS` is never used
[INFO] [stdout]    --> src/main.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 159 | static mut FALSE_BITS: [u8; 128] = [0; 128];
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_maps` is never used
[INFO] [stdout]    --> src/main.rs:161:11
[INFO] [stdout]     |
[INFO] [stdout] 161 | unsafe fn init_maps() { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NewMap` is never constructed
[INFO] [stdout]    --> src/main.rs:169:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | struct NewMap {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/main.rs:174:14
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl NewMap {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 174 |     const fn new() -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     fn set(&mut self, pos: Pos, value: bool) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     fn get(&self, pos: Pos) -> bool {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn copy_from(&mut self, map: &NewMap) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     fn shift(&mut self, dir: &Direction, n: usize) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     fn ipos_shift(&mut self, pos_shift: IPos) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     fn first_match(&self, value: bool) -> Result<Pos, ()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     fn count(&self, value: bool) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn compose(&self, map: &NewMap, map_offset: &Pos) -> NewMap {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `eq_or` and `reset` are never used
[INFO] [stdout]    --> src/main.rs:389:8
[INFO] [stdout]     |
[INFO] [stdout] 336 | impl Map {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 389 |     fn eq_or(&mut self, map: &Map) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 399 |     fn reset(&mut self) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `dist` and `isub` are never used
[INFO] [stdout]    --> src/main.rs:715:8
[INFO] [stdout]     |
[INFO] [stdout] 714 | impl Pos {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] 715 |     fn dist(&self, rhs: &Pos) -> usize {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 719 |     fn isub(&self, rhs: &Self) -> IPos {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IPos` is never constructed
[INFO] [stdout]    --> src/main.rs:727:8
[INFO] [stdout]     |
[INFO] [stdout] 727 | struct IPos {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OffCenteredMap` is never constructed
[INFO] [stdout]    --> src/main.rs:736:8
[INFO] [stdout]     |
[INFO] [stdout] 736 | struct OffCenteredMap {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/main.rs:741:14
[INFO] [stdout]     |
[INFO] [stdout] 740 | impl OffCenteredMap {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] 741 |     const fn new() -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SECTOR_MASK` is never used
[INFO] [stdout]    --> src/main.rs:749:12
[INFO] [stdout]     |
[INFO] [stdout] 749 | static mut SECTOR_MASK: [NewMap; NB_SECTORS] = [NewMap::new(); NB_SECTORS];
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TORPEDO_RANGE_MAP` is never used
[INFO] [stdout]    --> src/main.rs:750:12
[INFO] [stdout]     |
[INFO] [stdout] 750 | static mut TORPEDO_RANGE_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TORPEDO_SIDE_HIT_MAP` is never used
[INFO] [stdout]    --> src/main.rs:751:12
[INFO] [stdout]     |
[INFO] [stdout] 751 | static mut TORPEDO_SIDE_HIT_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SILENCE_RANGE_MAP` is never used
[INFO] [stdout]    --> src/main.rs:752:12
[INFO] [stdout]     |
[INFO] [stdout] 752 | static mut SILENCE_RANGE_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_game_maps` is never used
[INFO] [stdout]    --> src/main.rs:754:11
[INFO] [stdout]     |
[INFO] [stdout] 754 | unsafe fn init_game_maps() { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FuzzyPos` is never used
[INFO] [stdout]    --> src/main.rs:803:6
[INFO] [stdout]     |
[INFO] [stdout] 803 | enum FuzzyPos {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PosData` is never constructed
[INFO] [stdout]    --> src/main.rs:809:8
[INFO] [stdout]     |
[INFO] [stdout] 809 | struct PosData {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `analyse_action`, and `analyse_actions` are never used
[INFO] [stdout]    --> src/main.rs:822:8
[INFO] [stdout]     |
[INFO] [stdout] 821 | impl PosData {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 822 |     fn new(water_map: NewMap) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 831 |     fn analyse_action(&mut self, action: &OppAction) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 882 |     fn analyse_actions(&mut self, actions: &[OppAction]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MeAction` is never used
[INFO] [stdout]    --> src/main.rs:974:6
[INFO] [stdout]     |
[INFO] [stdout] 974 | enum MeAction {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `into_opp_action` is never used
[INFO] [stdout]    --> src/main.rs:998:8
[INFO] [stdout]     |
[INFO] [stdout] 997 | impl MeAction {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 998 |     fn into_opp_action(&self, current_sector: usize) -> OppAction {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OppAction` is never used
[INFO] [stdout]     --> src/main.rs:1013:6
[INFO] [stdout]      |
[INFO] [stdout] 1013 | enum OppAction {
[INFO] [stdout]      |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]     --> src/main.rs:1021:8
[INFO] [stdout]      |
[INFO] [stdout] 1020 | impl OppAction {
[INFO] [stdout]      | -------------- associated function in this implementation
[INFO] [stdout] 1021 |     fn parse(s: &str) -> Self {
[INFO] [stdout]      |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `torpedo` is never used
[INFO] [stdout]     --> src/main.rs:1278:8
[INFO] [stdout]      |
[INFO] [stdout] 1153 | impl Game {
[INFO] [stdout]      | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1278 |     fn torpedo(&mut self, pos: Pos) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:756:21
[INFO] [stdout]     |
[INFO] [stdout] 756 |     for (i, map) in SECTOR_MASK.iter_mut().enumerate() {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[deny(static_mut_refs)]` (part of `#[deny(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:771:25
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&raw const TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:772:17
[INFO] [stdout]     |
[INFO] [stdout] 772 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:783:17
[INFO] [stdout]     |
[INFO] [stdout] 783 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:791:9
[INFO] [stdout]     |
[INFO] [stdout] 791 |         SILENCE_RANGE_MAP.map.set(Pos { y: 4, x: i }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:792:9
[INFO] [stdout]     |
[INFO] [stdout] 792 |         SILENCE_RANGE_MAP.map.set(Pos { y: i, x: 4 }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:845:50
[INFO] [stdout]     |
[INFO] [stdout] 845 | ...                   let shift = pos.isub(&TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 845 |                             let shift = pos.isub(&raw const TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                                   +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:846:40
[INFO] [stdout]     |
[INFO] [stdout] 846 | ...                   let mask = TORPEDO_RANGE_MAP.map.clone().ipos_shift(shift);
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:41
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&raw const SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:65
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&SILENCE_RANGE_MAP.map, &raw const SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:868:49
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&raw const SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sonar_result`
[INFO] [stdout]     --> src/main.rs:1242:13
[INFO] [stdout]      |
[INFO] [stdout] 1242 |         let sonar_result = input_line.trim().to_string();
[INFO] [stdout]      |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sonar_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `coding_games_ocean_of_code` (bin "coding_games_ocean_of_code") due to 11 previous errors; 33 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: constant `MAP_NB_REGION` is never used
[INFO] [stdout]   --> src/main.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const MAP_NB_REGION: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECTOR_SIZE` is never used
[INFO] [stdout]   --> src/main.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const SECTOR_SIZE: usize = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_SIDE_SIZE` is never used
[INFO] [stdout]   --> src/main.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const MAP_SIDE_SIZE: usize = MAP_NB_REGION * SECTOR_SIZE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NB_SECTORS` is never used
[INFO] [stdout]   --> src/main.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const NB_SECTORS: usize = 9;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Sonar` and `Mine` are never constructed
[INFO] [stdout]    --> src/main.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 102 | enum System {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] 103 |     Torpedo,
[INFO] [stdout] 104 |     Sonar,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 105 |     Silence,
[INFO] [stdout] 106 |     Mine,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `System` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]    --> src/main.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl System {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] 123 |     fn parse(s: &str) -> Self {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nb_true_bits` is never used
[INFO] [stdout]    --> src/main.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn nb_true_bits(n: u16) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nb_false_bits` is never used
[INFO] [stdout]    --> src/main.rs:149:4
[INFO] [stdout]     |
[INFO] [stdout] 149 | fn nb_false_bits(n: u16) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TRUE_BITS` is never used
[INFO] [stdout]    --> src/main.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | static mut TRUE_BITS: [u8; 128] = [0; 128];
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `FALSE_BITS` is never used
[INFO] [stdout]    --> src/main.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 159 | static mut FALSE_BITS: [u8; 128] = [0; 128];
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_maps` is never used
[INFO] [stdout]    --> src/main.rs:161:11
[INFO] [stdout]     |
[INFO] [stdout] 161 | unsafe fn init_maps() { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NewMap` is never constructed
[INFO] [stdout]    --> src/main.rs:169:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | struct NewMap {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/main.rs:174:14
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl NewMap {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 174 |     const fn new() -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     fn set(&mut self, pos: Pos, value: bool) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     fn get(&self, pos: Pos) -> bool {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn copy_from(&mut self, map: &NewMap) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     fn shift(&mut self, dir: &Direction, n: usize) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     fn ipos_shift(&mut self, pos_shift: IPos) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     fn first_match(&self, value: bool) -> Result<Pos, ()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     fn count(&self, value: bool) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn compose(&self, map: &NewMap, map_offset: &Pos) -> NewMap {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset` is never used
[INFO] [stdout]    --> src/main.rs:399:8
[INFO] [stdout]     |
[INFO] [stdout] 336 | impl Map {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 399 |     fn reset(&mut self) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `dist` and `isub` are never used
[INFO] [stdout]    --> src/main.rs:715:8
[INFO] [stdout]     |
[INFO] [stdout] 714 | impl Pos {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] 715 |     fn dist(&self, rhs: &Pos) -> usize {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 719 |     fn isub(&self, rhs: &Self) -> IPos {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IPos` is never constructed
[INFO] [stdout]    --> src/main.rs:727:8
[INFO] [stdout]     |
[INFO] [stdout] 727 | struct IPos {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OffCenteredMap` is never constructed
[INFO] [stdout]    --> src/main.rs:736:8
[INFO] [stdout]     |
[INFO] [stdout] 736 | struct OffCenteredMap {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/main.rs:741:14
[INFO] [stdout]     |
[INFO] [stdout] 740 | impl OffCenteredMap {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] 741 |     const fn new() -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SECTOR_MASK` is never used
[INFO] [stdout]    --> src/main.rs:749:12
[INFO] [stdout]     |
[INFO] [stdout] 749 | static mut SECTOR_MASK: [NewMap; NB_SECTORS] = [NewMap::new(); NB_SECTORS];
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TORPEDO_RANGE_MAP` is never used
[INFO] [stdout]    --> src/main.rs:750:12
[INFO] [stdout]     |
[INFO] [stdout] 750 | static mut TORPEDO_RANGE_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TORPEDO_SIDE_HIT_MAP` is never used
[INFO] [stdout]    --> src/main.rs:751:12
[INFO] [stdout]     |
[INFO] [stdout] 751 | static mut TORPEDO_SIDE_HIT_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SILENCE_RANGE_MAP` is never used
[INFO] [stdout]    --> src/main.rs:752:12
[INFO] [stdout]     |
[INFO] [stdout] 752 | static mut SILENCE_RANGE_MAP: OffCenteredMap = OffCenteredMap::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_game_maps` is never used
[INFO] [stdout]    --> src/main.rs:754:11
[INFO] [stdout]     |
[INFO] [stdout] 754 | unsafe fn init_game_maps() { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FuzzyPos` is never used
[INFO] [stdout]    --> src/main.rs:803:6
[INFO] [stdout]     |
[INFO] [stdout] 803 | enum FuzzyPos {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PosData` is never constructed
[INFO] [stdout]    --> src/main.rs:809:8
[INFO] [stdout]     |
[INFO] [stdout] 809 | struct PosData {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `analyse_action`, and `analyse_actions` are never used
[INFO] [stdout]    --> src/main.rs:822:8
[INFO] [stdout]     |
[INFO] [stdout] 821 | impl PosData {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 822 |     fn new(water_map: NewMap) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 831 |     fn analyse_action(&mut self, action: &OppAction) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 882 |     fn analyse_actions(&mut self, actions: &[OppAction]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MeAction` is never used
[INFO] [stdout]    --> src/main.rs:974:6
[INFO] [stdout]     |
[INFO] [stdout] 974 | enum MeAction {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `into_opp_action` is never used
[INFO] [stdout]    --> src/main.rs:998:8
[INFO] [stdout]     |
[INFO] [stdout] 997 | impl MeAction {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 998 |     fn into_opp_action(&self, current_sector: usize) -> OppAction {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OppAction` is never used
[INFO] [stdout]     --> src/main.rs:1013:6
[INFO] [stdout]      |
[INFO] [stdout] 1013 | enum OppAction {
[INFO] [stdout]      |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]     --> src/main.rs:1021:8
[INFO] [stdout]      |
[INFO] [stdout] 1020 | impl OppAction {
[INFO] [stdout]      | -------------- associated function in this implementation
[INFO] [stdout] 1021 |     fn parse(s: &str) -> Self {
[INFO] [stdout]      |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `torpedo` is never used
[INFO] [stdout]     --> src/main.rs:1278:8
[INFO] [stdout]      |
[INFO] [stdout] 1153 | impl Game {
[INFO] [stdout]      | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1278 |     fn torpedo(&mut self, pos: Pos) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:756:21
[INFO] [stdout]     |
[INFO] [stdout] 756 |     for (i, map) in SECTOR_MASK.iter_mut().enumerate() {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[deny(static_mut_refs)]` (part of `#[deny(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:771:25
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 771 |             if pos.dist(&raw const TORPEDO_RANGE_MAP.offset) <= 4 {
[INFO] [stdout]     |                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:772:17
[INFO] [stdout]     |
[INFO] [stdout] 772 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:783:17
[INFO] [stdout]     |
[INFO] [stdout] 783 |                 TORPEDO_RANGE_MAP.map.set(pos, true);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:791:9
[INFO] [stdout]     |
[INFO] [stdout] 791 |         SILENCE_RANGE_MAP.map.set(Pos { y: 4, x: i }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/main.rs:792:9
[INFO] [stdout]     |
[INFO] [stdout] 792 |         SILENCE_RANGE_MAP.map.set(Pos { y: i, x: 4 }, true);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:845:50
[INFO] [stdout]     |
[INFO] [stdout] 845 | ...                   let shift = pos.isub(&TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 845 |                             let shift = pos.isub(&raw const TORPEDO_RANGE_MAP.offset);
[INFO] [stdout]     |                                                   +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:846:40
[INFO] [stdout]     |
[INFO] [stdout] 846 | ...                   let mask = TORPEDO_RANGE_MAP.map.clone().ipos_shift(shift);
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:41
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&raw const SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:850:65
[INFO] [stdout]     |
[INFO] [stdout] 850 | ...                   map.compose(&SILENCE_RANGE_MAP.map, &SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 850 |                             map.compose(&SILENCE_RANGE_MAP.map, &raw const SILENCE_RANGE_MAP.offset);
[INFO] [stdout]     |                                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:868:49
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 868 |                         map.ipos_shift(pos.isub(&raw const SILENCE_RANGE_MAP.offset));
[INFO] [stdout]     |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `coding_games_ocean_of_code` (bin "coding_games_ocean_of_code" test) due to 11 previous errors; 33 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "1e6a9f3b2ca22d22f2b033110b9beada9876b86097007f1e4101955eb0cf2614", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1e6a9f3b2ca22d22f2b033110b9beada9876b86097007f1e4101955eb0cf2614", kill_on_drop: false }`
[INFO] [stdout] 1e6a9f3b2ca22d22f2b033110b9beada9876b86097007f1e4101955eb0cf2614
